import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
// 导入ejs模板引擎
// import 'dotenv/config'
import { Logger } from '@nestjs/common';
import { NestExpressApplication } from '@nestjs/platform-express'; // 导入express模块去搭建服务器
import { join } from 'path'; // 导入parse模块
// 导入cookie-parse
import * as cookieParser from 'cookie-parser';
// 导入session
import * as session from 'express-session';
import { test1MiddleWares } from './middlewares/test1';
import { AuthGuard } from './guard/auth.guard';
const PORT = process.env.PORT || 8080;
console.log(PORT, 888);

async function bootstrap() {
  // const app = await NestFactory.create(AppModule);
  // await app.listen(3000);
  const app = await NestFactory.create<NestExpressApplication>(AppModule);
  app.useGlobalGuards(new AuthGuard());
  // 配置静态文件的目录
  //方式一是直接访问:localhost:4000/1.jpg
  //app.useStaticAssets(join(__dirname, '..', 'public'));
  //方式二是访问:localhost:4000/static/1.jpg但是在public文件夹下不需要创建static目录
  app.useStaticAssets(join(__dirname, '../public'), {
    prefix: '/static', // 配置虚拟路径
  });

  // 配置视图文件的目录 配置默认用户访问的时候使用views这个目录
  app.setBaseViewsDir(join(__dirname, '../views'));
  // 配置使用ejs模板引擎

  app.setViewEngine('ejs');
  app.set('views', 'views');
  // 调用cookie-parser  相当于调用第三方中间件
  app.use(cookieParser()); // 第三方中间件需要执行
  // 配置session
  app.use(test1MiddleWares());
  app.use(session({ secret: '123456', cookie: { maxAge: 60000 } })); //secret 相当于是在加盐
  await app.listen(PORT, () => {
    Logger.log(`服务已经启动请访问http://www.localhost:${PORT}`);
    console.log(111);
  });
}
bootstrap();
